- try-with-resource
- ๊ฐํ ๊ฒฐํฉ๊ณผ ๋์จํ ๊ฒฐํฉ
- ์ง๋ ฌํ์ ์ญ์ง๋ ฌํ
- ์๋ฐ์ ๋์์ฑ ์ด์(๊ณต์ ์์ ์ ๊ทผ)
- Mutable ๊ฐ์ฒด์ Immutable ๊ฐ์ฒด์ ์ฐจ์ด์
- ์๋ฐ์์ null์ ์์ ํ๊ฒ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ
- JDK์ JRE์ ์ฐจ์ด์
1. try-with-resource
- java์์ ์๋์ผ๋ก ์์์ ๊ด๋ฆฌํด์ฃผ๋ ๊ตฌ์กฐ
- ์์์ ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ์์ฑํ ๋ close()์ฒ๋ฆฌ๋ฅผ ํ์ง ์์๋ ์๋์ผ๋ก ์์ ํด์
- ๋ฆฌ์์ค ๋์๋ฅผ ๋ฐฉ์งํ๊ณ ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์์ ์ฑ์ ๋์
Question
try-with-resources
๊ฐ ๋ฌด์์ธ๊ฐ์?
try-with-resources๋ ์์์ ์๋์ผ๋ก ๊ด๋ฆฌํด์ฃผ๋ ๊ตฌ์กฐ์ ๋๋ค. AutoCloseable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ close() ๋ฉ์๋๋ฅผ ํธ์ถํ์ง ์์๋ try ๋ธ๋ญ์ด ํด์ ๋ ๋ ์๋์ผ๋ก ์์์ ํด์ ํด ์ฃผ์ด ๋ฆฌ์์ค ๋์๋ฅผ ๋ฐฉ์งํ๊ณ ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์์ ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
โ ํ์ผ ์ ์ถ๋ ฅ ๊ด๋ จ๋ ํด๋์ค, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ จ ํด๋์ค, ๋คํธ์ํฌ ๊ด๋ จ ํด๋์ค ๋ฑ๋ฑ
Question
๊ธฐ์กด
try-finally
๋ฐฉ์๊ณผtry-with-resources
๋ฐฉ์์ ์ฐจ์ด๋ ๋ฌด์์ธ๊ฐ์?
try-finally
๋ฐฉ์์์๋ ์์์ ๋ช
์์ ์ผ๋ก ๋ซ๊ธฐ ์ํด finally
๋ธ๋ก์์ close()
๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํฉ๋๋ค. ํ์ง๋ง, ์์ธ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์ฝ๋๊ฐ ์ค๋จ๋ ๊ฒฝ์ฐ ์์์ ์ ๋๋ก ๋ซ์ง ๋ชปํ ์ํ์ด ์์ต๋๋ค.
๋ฐ๋ฉด, try-with-resources
๋ ์์์ด ์๋์ผ๋ก ๋ซํ๋๋ก ๋ณด์ฅํฉ๋๋ค. ์์์ ๊ด๋ฆฌํ๋ ์ฝ๋๊ฐ ๊ฐ์ํ๋๊ณ ์์ธ ์ฒ๋ฆฌ ์ค์๋ ๋ฆฌ์์ค ๋์๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
2. ๊ฐํ ๊ฒฐํฉ๊ณผ ๋์จํ ๊ฒฐํฉ
๊ฐํ ๊ฒฐํฉ
- ํด๋์ค๋ ๋ชจ๋๊ฐ์ ์์กด์ฑ์ด ๋์ ์ํ
- ํด๋์ค ๊ฐ์ ๋ณ๊ฒฝ์ด ์ด๋ ต๊ณ , ํ๋์ ํด๋์ค๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋ค๋ฅธ ํด๋์ค๋ ํจ๊ป ์์ ํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์
- ์์กด์ฑ์ด ๋๋ค (๋ค๋ฅธ ํด๋์ค์ ์์กดํจ)
- ์ฌ์ฌ์ฉ์ฑ์ด ๋ฎ๋ค (๋ค๋ฅธ ํด๋์ค์ ์ฐ๊ฒฐ๋์ด ์์ด ๋ ๋ฆฝ์ ์ฌ์ฉ์ด ์ด๋ ค์)
- ํ ์คํธ๊ฐ ์ด๋ ต๋ค (๋ค๋ฅธํด๋์ค ์์ด ํ ์คํธ ์ํ ์ด๋ ค์)
๋์จํ ๊ฒฐํฉ
- ํด๋์ค๋ ๋ชจ๋๊ฐ์ ์์กด์ฑ์ด ๋ฎ์ ์ํ
- ํด๋์ค๊ฐ ์ํธ์์ฉ์ ์ธํฐํ์ด์ค๋ ์ถ์ํด๋์ค๋ฑ์ ํตํด ์ด๋ฃจ์ด์ง
- ์์กด์ฑ์ด ๋ฎ๊ณ , ์ฌ์ฌ์ฉ์ฑ์ด ๋๊ณ , ํ ์คํธ๊ฐ ์ฉ์ดํ๊ณ , ํ์ฅ์ฑ์ด ์ฐ์ํจ
๋์จํ ๊ฒฐํฉ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ
- ์ธํฐํ์ด์ค๋ ์ถ์ํด๋์ค์ ์์กดํ๋๋ก ์ค๊ณ
- ๊ฐ์ฒด ๊ฐ ์์กด์ฑ์ ์์ฑ์, ๋ฉ์๋, ํ๋์ฃผ์ ๋ฐฉ์์ผ๋ก ์ธ๋ถ์์ ์ฃผ์ (DI)
Question
๊ฐํ ๊ฒฐํฉ๊ณผ ๋์จํ ๊ฒฐํฉ์ ์ฐจ์ด๋ฅผ ์ค๋ช ํ์ธ์.
๊ฐํ ๊ฒฐํฉ์ ํด๋์ค ๊ฐ ์์กด์ฑ์ด ๋์ ์ฝ๋ ๋ณ๊ฒฝ๊ณผ ์ฌ์ฌ์ฉ์ด ์ด๋ ต์ต๋๋ค. ๋ฐ๋ฉด, ๋์จํ ๊ฒฐํฉ์ ์ธํฐํ์ด์ค, DI, ๋๋ ํฉํ ๋ฆฌ ํจํด ๋ฑ์ ํตํด ์์กด์ฑ์ ์ค์ด๊ณ , ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ด๋ ์ค๊ณ ๋ฐฉ์์ ๋๋ค.
Question
์์กด์ฑ ์ฃผ์ (DI)์ด ๋์จํ ๊ฒฐํฉ์ ๊ธฐ์ฌํ๋ ์ด์ ๋ฅผ ์ค๋ช ํ์ธ์.
DI๋ ๊ฐ์ฒด ์์ฑ๊ณผ ๊ด๋ฆฌ๋ฅผ ์ธ๋ถ์์ ์ฒ๋ฆฌํ์ฌ ํด๋์ค ๊ฐ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๋ ๋ํ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค.
3. ์ง๋ ฌํ์ ์ญ์ง๋ ฌํ
์ง๋ ฌํ(Serialization)
- ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ๋ ๊ณผ์
- ๊ฐ์ฒด์ ์ํ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ๋ค๋ฅธ ํ๊ฒฝ์ผ๋ก ์ ์กํ๊ธฐ ์ํด ์ฌ์ฉ
- ๋คํธ์ํฌ ํต์ ์ ๊ฐ์ฒด๋ฅผ ์ ์ก ๊ฐ๋ฅํ๋๋ก ๋ณํ
์ญ์ง๋ ฌํ(Deserialization)
- ์ง๋ ฌํ๋ ๋ฐ์ดํธ ์คํธ๋ฆผ์ ๋ค์ ๊ฐ์ฒด๋ก ๋ณต์ํ๋ ๊ณผ์
- ์ ์ฅ๋ ๊ฐ์ฒด ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ฌ์ฉํ ์ ์๋๋ก ๋ณต์
- ๋คํธ์ํฌ๋ก ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด ํํ๋ก ๋ณํ
Question
์ง๋ ฌํ์ ์ญ์ง๋ ฌํ๋ ๋ฌด์์ธ๊ฐ์?
์ง๋ ฌํ๋ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ์ฌ ๊ฐ์ฒด ์ํ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ๋คํธ์ํฌ ํต์ ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๊ณ ์ญ์ง๋ ฌํ๋ ๋ฐ๋๋ก ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ณํ๋ ๊ฐ์ฒด๋ฅผ ๋ค์ ๊ฐ์ฒด๋ฅด ๋ณํํ๋ ๊ณผ์ ์ ๋๋ค.
Question
์ง๋ ฌํ์ ์ฅ/๋จ์
์ ์ฅํ๊ฑฐ๋ ๋คํธ์ํฌ ์ ์ก์์ ๊ฐํธํ๊ณ ๋ณต์กํ ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์์ง๋ง ์ง๋ ฌํํ๊ฑฐ๋ ์ญ์ง๋ ฌํ ํ๋ ๊ณผ์ ์์ cpu ์ฌ์ฉ๋์ด ์ฆ๊ฐํด ์ฑ๋ฅ์ด ์ ํํ ์ ์์ต๋๋ค.
Question
์ง๋ ฌํ๋ฅผ ์ํด ํ์ํ ์กฐ๊ฑด์ ๋ฌด์์ธ๊ฐ์?
ํด๋์ค๊ฐ Serializable
์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด์ผ ํ๋ฉฐ, ๊ฐ์ฒด๊ฐ ์ฐธ์กฐํ๋ ๋ชจ๋ ๊ฐ์ฒด๋ ์ง๋ ฌํ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
4. ์๋ฐ์ ๋์์ฑ ์ด์(๊ณต์ ์์ ์ ๊ทผ)
๋์์ฑ์ด๋?
- ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์คํ๋๋ ํ๊ฒฝ
- ์์์ ํจ์จ์ ์ผ๋ก ํ์ฉํ๊ธฐ ์ํด ๊ตฌํ
- ๋ฉํฐ์ค๋ ๋ฉ์ ํตํด ์ด๋ฃจ์ด์ง๋ฉฐ, ์ฌ๋ฌ ์์ ์ด ๊ต์ฐจํ๋ฉด์ ์คํ๋ ์ ์์
๊ณต์ ์์๊ณผ ๋์์ฑ ์ด์
- ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์ ๊ทผํ๋ ์์
- ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์์์ ์ฝ๊ฑฐ๋ ์์ ํ๋ ค ํ ๋ ์ผ๊ด์ฑ ๋ฌธ์ ๋ ์์์น ๋ชปํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์
์ฃผ์ ๋์์ฑ ์ด์
- ๊ฒฝ์ ์ํ(RaceCondition) : ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ๊ณต์ ์์์ ์ ๊ทผํ์ฌ ๋์์ ๊ฐ์ ๋ณ๊ฒฝํ์ฌ ๋ฎ์ด์์ฐ๋ ๊ฒฝ์ฐ
- ๊ต์ฐฉ ์ํ(DeadLock) : ์ฌ๋ฌ ์ค๋ ๋๊ฐ ์๋ก์ ์์์ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๋ฌดํ ๋๊ธฐ์ํ
- ๊ธฐ์ ์ํ(Starvation) : ์ฐ์ ์์๊ฐ ๋ฎ์ ์ค๋ ๋๊ฐ cpu ์๊ฐ์ ๋ฐฐ์ ๋ฐ์ง ๋ชปํด ๋ฌดํ ์ง์ฐ๋๋ ํ์
Question
์๋ฐ์ ๋์์ฑ ์ด์์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์
์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์คํ๋๋ ์ํฉ์ ์๋ฏธํฉ๋๋ค. ๋์์ฑ ๋ฌธ์ ๋ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๊ณต์ ์์์ ๋์์ ์ ๊ทผํ๋ ค ํ ๋ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋์์ฑ ์ด์๋ ํ๋ก๊ทธ๋จ์ ์ ํ์ฑ๊ณผ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ์ค ์ ์์ต๋๋ค.
Question
Deadlock์ ๋ฌด์์ด๋ฉฐ, ์ด๋ฅผ ๋ฐฉ์งํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ์?
๋ฐ๋๋ฝ์ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์์์ ์ ๊ทผํ์์ ๋ ์์์ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๋ฌดํ ๋๊ธฐ์ ๋น ์ง๋ ํ์์ ๋๋ค. ๋ฐฉ์งํ๋ ๋ฐฉ๋ฒ์ ์ ๊ทผ ์์๋ฅผ ๊ณ ์ ํ๊ฑฐ๋, ํ์์์์ ์ค์ ํ๊ฑฐ๋, lock์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
Question
๋๊ธฐํ์ lock์ ์ฐจ์ด๋?
๋๊ธฐํ๋ JVM์ด ์ ๊ณตํ๋ ๊ธฐ๋ณธ ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ด๋ฉฐ, Lock์ JAVA API์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ผ๋ก ๋ ์ธ๋ฐํ ์ ์ด๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
5. ์๋ฐ์ Mutable ๊ฐ์ฒด์ Immutable ๊ฐ์ฒด์ ์ฐจ์ด์
Mutable ๊ฐ์ฒด
- ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ ๊ฐ์ฒด
- ๊ฐ์ฒด ์์ฑ ํ ํ๋๊ฐ์ ๋ณ๊ฒฝ ๊ฐ๋ฅ
- ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ , ๋์์ฑ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ์ฑ ์์
- StringBuilder, ArrayList, HashMap ๋ฑ
Immutable ๊ฐ์ฒด
- ์ํ๊ฐ ๋ณํ์ง ์๋ ๊ฐ์ฒด
- ์ํ ๋ณ๊ฒฝ์ ์ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ผ ํ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ์ CPU ์ฌ์ฉ๋ ์ฆ๊ฐ
- ์์ ํ ์ค๋ ๋ ์์ ๊ฐ๋ฅ(๋์์ฑ ๋ฌธ์ ์์), ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ฆ๊ฐ
- String, Integer, LocalDate
Question
Mutable ๊ฐ์ฒด์ Immutable ๊ฐ์ฒด์ ์ฐจ์ด๋ฅผ ์ค๋ช ํด์ฃผ์ธ์
Mutable๊ฐ์ฒด๋ ์ํ๊ฐ ๋ณํ ์ ์๋ ๊ฐ์ฒด๋ก ๋ํ์ ์ผ๋ก StringBuilder, List, HashMap ๋ฑ์ด ์์ต๋๋ค. Immutable ๊ฐ์ฒด๋ ์ํ๊ฐ ๋ณํ์ง ์๋ ๊ฐ์ฒด๋ก String, Integer ๋ฑ์ด ์์ต๋๋ค. Mutable ๊ฐ์ฒด๋ ์ฃผ๋ก ์ํ๊ฐ ๋ง์ด ๋ณํ๋ ๊ฐ์ฒด์ ์ฌ์ฉ๋์ด ๋ฉ๋ชจ๋ฆฌ์ ํจ์จ์ ์ด์ง๋ง ๋์์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. Immutable ๊ฐ์ฒด๋ ์ฃผ๋ก ์ํ๊ฐ ๋ง์ด ๋ณํ์ง ์๋ ๊ฐ์ฒด์ ์ฌ์ฉ๋๋ฉฐ ๋์์ฑ ์ด์๊ฐ ๋ฐ์ํ์ง ์์ ์์ ํ์ง๋ง ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ฆ๊ฐํ ์ ์์ต๋๋ค.
Question
Immutable ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ด๋ค Java ํค์๋๋ฅผ ์ฌ์ฉํ ์ ์๋์?
final ์ ์ฌ์ฉํ์ฌ ๋ถ๋ณ์ฑ์ ๋ณด์ฅํ๊ฑฐ๋, private์ผ๋ก ์ ์ธํ์ฌ ์ธ๋ถ์์ ๋ณ๊ฒฝํ ์ ์๊ฒ ํฉ๋๋ค.
Question
Immutable ๊ฐ์ฒด๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฑ๋ฅ ์ธก๋ฉด์์ ์ด๋ค ๋จ์ ์ด ์์ผ๋ฉฐ, ์ด๋ฅผ ๊ทน๋ณตํ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ์?
ํญ์ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํด ๋ถํ์ํ ๊ฐ์ฒด ์์ฑ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ด ์ฆ๊ฐํ ์ ์์ด ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฌ์ฉํ๊ฑฐ๋ ์บ์ฑ์ด๋ Builder ํจํด์ ์ฌ์ฉํ๋ ์ ๋ต์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
6. ์๋ฐ์์ null์ ์์ ํ๊ฒ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ
Optional
Optional
ํด๋์ค๋ null ๊ฐ์ ๊ฐ์ธ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.Optional
์ ์ฌ์ฉํ๋ฉด null ์ฒดํฌ๋ฅผ ๊ฐ์ํํ๊ณ , null์ด ๋ฐ์ํ์ ๋ ์์ธ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
Null ์ฒดํฌ ๋ฉ์๋
- Objects ํด๋์ค์ isNull()๊ณผ nonNull() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฒดํฌ
Null ๋ณํฉ ์ฐ์ฐ์
- ?? ์ฐ์ฐ์๋ฅผ ์ฌ์ฉ
- null ์ด๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๋ฐํ
Question
Java์์
null
์ ์์ ํ๊ฒ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ์?
๋ช ์์ ์ผ๋ก ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํด ํ์ธํ๋ ๋ฐฉ๋ฒ์ด ์๊ณ , java 8 ์ดํ๋ถํฐ ๋์ ๋ Optional ํด๋์ค๋ฅผ ์ด์ฉํ์ฌ ์์ ํ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ๋๋ Objects์ isNull๊ณผ nonNull๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, @Nullable, @NonNull ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
7. JDK์ JRE์ ์ฐจ์ด์
JDK(Java Development Kit)
- JDK๋ Java ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์๋๋ก ํ์ํ ๋ชจ๋ ๋๊ตฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํ ๊ฐ๋ฐ ํคํธ
- JRE, Java ์ปดํ์ผ๋ฌ, ๋๋ฒ๊ฑฐ, javadoc ๋ฑ์ผ๋ก ๊ตฌ์ฑ
- Java ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๊ณ ์ปดํ์ผํ๋ฉฐ ๋๋ฒ๊น ํ๋๋ฐ ์ฌ์ฉ
JRE(Java Runtime Enviorment)
- Java ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ์ ์๋ ํ๊ฒฝ์ ์ ๊ณตํ๋ ์ํํธ์จ์ด
- JVM, Java ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ตฌ์ฑ
- Java ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๋ฐ ํ์ํ ํ๊ฒฝ ์ ๊ณต
- Java ๊ฐ๋ฐ์ ์ํ ๋๊ตฌ๋ ํฌํจํ์ง ์๊ณ , ๋จ์ง ์คํ๋ง์ ์ํ ํ๊ฒฝ
Question
JDK์ JRE์ ์ฐจ์ด์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
JDK๋ Java ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๊ธฐ ์ํ ๋๊ตฌ ๋ชจ์์ด๋ฉฐ, JRE๋ Java ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํด ํ๊ฒฝ์ ์ ๊ณตํ๋ ์ํํธ์จ์ด์ ๋๋ค.
Question
JVM๊ณผ JRE, JDK์ ๊ด๊ณ๋ฅผ ๊ณ์ธต์ ์ผ๋ก ์ค๋ช ํ๊ณ , JDK ์์ด JRE๋ง์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋ ์ํฉ์์ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์ ์ ๋ํด ๋ ผ์ํด๋ณด์ธ์.
JVM์ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ๋ด๋นํ๋ ํต์ฌ ์์ง์ ๋๋ค. JVM์ ์๋ฐ ๋ฐ์ดํธ์ฝ๋๋ฅผ ํด์ํ๊ฑฐ๋ JIT ์ปดํ์ผ๋ฌ๋ฅผ ํตํด ๊ธฐ๊ณ์ด๋ก ๋ณํํด ์คํํฉ๋๋ค. JRE๋ JVM๊ณผ ์คํ์ ํ์ํ ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๊ตฌ์ฑ ์์๋ฅผ ํฌํจํ์ฌ ์คํ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค. JDK๋ JRE์ ๊ฐ๋ฐ ๋๊ตฌ(์ปดํ์ผ๋ฌ, ๋๋ฒ๊ฑฐ ๋ฑ)๋ฅผ ์ถ๊ฐํ ํจํค์ง์ ๋๋ค.
์ปดํ์ผ ์ด์: JRE๋ง ์์ ๊ฒฝ์ฐ, ๊ฐ๋ฐ์๋ ์์ค์ฝ๋๋ฅผ ๋ฐ์ดํธ์ฝ๋๋ก ๋ณํ(javac)ํ ์ ์์ต๋๋ค. ๋ฐฐํฌ ์ ์์ค์ฝ๋ ์์ ์ด ํ์ํ ์ํฉ์์ JDK๊ฐ ์์ผ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ํ๊ฑฐ๋ ๋น๋ํ ์ ์์ต๋๋ค. ๋๋ฒ๊น ์ ํ: JRE๋ง ์์ผ๋ฉด ๋ฐํ์ ์ค ๋ฌธ์ ๋ฅผ ํ์ ํ๊ฑฐ๋ ๋๋ฒ๊น ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์์ด ๋ฌธ์ ํด๊ฒฐ์ด ์ด๋ ต์ต๋๋ค. ์๋ํ ๋ฌธ์ : CI/CD์ ๊ฐ์ ๋น๋ ์๋ํ ํ๊ฒฝ์์๋ JDK๊ฐ ํ์ํฉ๋๋ค. ๋น๋์ ์คํ ํ๊ฒฝ์ด ๋ถ๋ฆฌ๋์ง ์์ผ๋ฉด ๋ฐฐํฌ ์ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
Question
๋๊ท๋ชจ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ ์๋ฐ ๋ฐฑ์๋ ์์คํ ์์ ๊ฐํ ๊ฒฐํฉ๊ณผ ๋์จํ ๊ฒฐํฉ์ ๊ฐ๊ฐ ์ด๋์์ ์ฌ์ฉํ๋ฉด ์ ํฉํ ๊น์? ๊ตฌ์ฒด์ ์ธ ์ฌ๋ก๋ฅผ ๋ค์ด ์ค๋ช ํด์ฃผ์ธ์.
๋๊ท๋ชจ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ ์์คํ ์ ์๋น์ค ๊ณ์ธต์ด๋ ๋น์ฆ๋์ค ๋ก์ง ๊ณ์ธต์์๋ ๋์จํ ๊ฒฐํฉ์ ํ์ฉํ์ฌ ๋ณ๊ฒฝ์ ์ ์ฐํ๊ฒ ๋์ฒํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ฒฐ์ ์๋น์ค์์ ๋ค์ํ ๊ฒฐ์ ๊ฒ์ดํธ์จ์ด๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด PaymentGateway ์ธํฐํ์ด์ค๋ฅผ ์ค๊ณํ๊ณ , ๊ฐ๊ฐ์ ๊ฒ์ดํธ์จ์ด๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๊ตฌํํฉ๋๋ค.
๊ฐํ ๊ฒฐํฉ: ๋ฐ๋๋ก, ์์คํ ์ ์ฑ๋ฅ๊ณผ ์์ ์ฑ์ด ์ค์ํ ์บ์ฑ ๋ก์ง์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ๋์ญ์ ๊ด๋ฆฌ์์๋ ๊ฐํ ๊ฒฐํฉ์ ์ฌ์ฉํ์ฌ ๋ถํ์ํ ์ถ์ํ๋ฅผ ์ค์ด๊ณ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Redis ์บ์ฑ ๋ก์ง์์ ํด๋ผ์ด์ธํธ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ๊ณ ์ฌ์ฉํฉ๋๋ค.
Question
์๋ฐ ์ง๋ ฌํ์ ๊ธฐ๋ณธ ๊ตฌํ์ด ๊ฐ์ง๋ ๋จ์ ์ ๋ฌด์์ด๊ณ , ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋์ ๊ธฐ์ ์๋ ๋ฌด์์ด ์๋์?
์ฑ๋ฅ ๋ฌธ์ : ๊ธฐ๋ณธ ์ง๋ ฌํ๋ ์๋ฐ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ๋ ๋ฐ ๋น์ฉ์ด ๋ง์ด ๋ญ๋๋ค. ๋ณด์ ๋ฌธ์ : ์ญ์ง๋ ฌํ ๊ณผ์ ์์ ์ ์์ ์ธ ๋ฐ์ดํฐ๋ฅผ ํตํด java.io.ObjectInputStream์ด ๋ณด์ ์ทจ์ฝ์ ์ ๋ ธ์ถํ ์ ์์ต๋๋ค. ํธํ์ฑ ๋ฌธ์ : ํด๋์ค ๊ตฌ์กฐ๊ฐ ๋ณ๊ฒฝ๋์์ ๋, serialVersionUID๊ฐ ๋ง์ง ์์ผ๋ฉด ์ง๋ ฌํ๋ ๊ฐ์ฒด๋ฅผ ๋ณต์ํ ์ ์์ต๋๋ค. ์ฝ๊ธฐ ์ด๋ ค์: ๊ธฐ๋ณธ ์ง๋ ฌํ ํ์์ ์ฌ๋์ด ์ฝ์ ์ ์๊ณ , ํน์ ๋ชฉ์ (์: ๋ฐ์ดํฐ ๊ตํ)์ ์ ํฉํ์ง ์์ต๋๋ค.
๋์ ๊ธฐ์ : JSON ๋๋ XML: Jackson, Gson๊ณผ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํด ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐํ๋ ํ ์คํธ ํ์์ผ๋ก ๋ณํ. Protocol Buffers, Avro, Thrift: ๊ณ ์ฑ๋ฅ ์ด์ง ์ง๋ ฌํ ํ์์ผ๋ก, ํฌ๊ธฐ๊ฐ ์๊ณ ๋ ๋น ๋ฆ ๋๋ค. Kryo: ์๋ฐ์ ๋์ฒด ์ง๋ ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ์๋์ ํฌ๊ธฐ ๋ฉด์์ ํจ์จ์ ์ ๋๋ค.